from django import template
from django.utils.html import format_html

register = template.Library()


# 自定义过滤器


# 自定义标签
# 定义一个加分函数
@register.simple_tag()
def jia(a, b):
    res = int(a) + int(b)
    return res


# 自定义分页标签
# 分页方法
@register.simple_tag()
def pageinit(num, request):
    '''

    :param num:总页数
    :param p: 当前页数
    :return:

    需求：10个页面一分页
    '''

    # 获取当前页码数
    p = int(request.GET.get('page', 1))


    '''
    优化，需要分页替换时携带搜索的参数，request请求中包含这些参数
    需要替换成 http://127.0.0.1:8000/myadmin/user/index?page=2&selecttype=phonenum&selectkey=123
    
    获取页面请求的参数
    样本：{'page': '2', 'selecttype': 'phonenum', 'selectkey': '123'}
    不要page，将selecttype和selectkey拼接成&selecttype=phonenum&selectkey=123
    '''
    args = ''
    parm = request.GET.dict()
    # print(parm)
    for k,v in parm.items():
        if k != 'page':
            args += f'&{k}={v}'
    # print(args)

    # 当前页是p 开始页就是p的前5个，结束页是p的后4个，一共10个
    start_page = p - 5
    end_page = p + 4

    # 如果总页数都没有10个，那就是1到num
    if num <= 10:
        start_page = 1
        end_page = num
    # 如果当前页小于5，那么开始结束就是1到10
    elif p <= 5:
        start_page = 1
        end_page = 10
    # 如果当前页大于num-4，即最后的4个页面，那么开始结束就是最最后10页
    elif p >= num - 4:
        start_page = num - 9
        end_page = num


    p_range = ''
    # 页首 和 上一页
    p_range += f'<li><a href="?page=1{args}">首页</a></li>'
    # 判断上一页是否越界
    if p-1 == 0:
        p_range += f'<li class="am-disabled"><a href="?page=1{args}">上一页</a></li>'
    else:
        p_range += f'<li><a href="?page={p-1}{args}">上一页</a></li>'

    # 中间 分页数
    for i in range(start_page, end_page + 1):
        if i == p:
            p_range += f'<li class="am-active"><a href="?page={i}{args}">{i}</a></li>'
        else:
            p_range += f'<li><a href="?page={i}{args}">{i}</a></li>'

    # 页尾 和 下一页
    # 判断下一页是否越界
    if p+1 == num+1:
        p_range += f'<li class="am-disabled"><a href="?page={num}{args}">下一页</a></li>'
    else:
        p_range += f'<li><a href="?page={p+1}{args}">下一页</a></li>'
    p_range += f'<li><a href="?page={num}{args}">尾页</a></li>'

    # print(p_range)
    return format_html(p_range)
